/*
@STI LICENSE
(C) 2006-2008 Universit�t Innsbruck.

This file is part of myOntology.

myOntologyis free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

myOntologyis distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with myOntology.  If not, see <http://www.gnu.org/licenses/>.

@STI LICENSE */
package view.servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.myontology.users.Login;
import org.openrdf.model.URI;
import org.openrdf.model.impl.URIImpl;



/**
 * Servlet implementation class for Servlet: GetConceptTreeNode
 * 
 * @web.servlet name="GetConceptTreeNode" display-name="GetConceptTreeNode"
 * 
 * @web.servlet-mapping url-pattern="/GetConceptTreeNode"
 * 
 */
public class AddNodesInTree extends javax.servlet.http.HttpServlet
		implements javax.servlet.Servlet {
	static final long serialVersionUID = 1L;

	/*
	 * (non-Java-doc)
	 * 
	 * @see javax.servlet.http.HttpServlet#HttpServlet()
	 */
	public AddNodesInTree() {
		super();
	}

	/*
	 * (non-Java-doc)
	 * 
	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,
	 *      HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {
		

		
		if ( !Login.LOGGED_IN.getValue(request) ) {			
			response.sendRedirect( request.getContextPath() + "/login");
			return;
		}
		
		// Get the data parameter sent
		try {
		String objectId = request.getParameter("parent");
		objectId = URLDecoder.decode(objectId, "UTF-8");
		String om = request.getParameter("module"); //evtl. only for some ontology module (domain)
		om = URLDecoder.decode(om, "UTF-8");
		String currnodes = request.getParameter("currnodes");
		currnodes = URLDecoder.decode(currnodes, "UTF-8");
		String isinclass = request.getParameter("isinclass");
		boolean inclass = false;
		if (isinclass.equals("true")) inclass = true;
		ArrayList<URI> cnodes = new ArrayList<URI>();
		
		int start_idx, end_idx = 0;
		uriadd: do{
			start_idx = currnodes.indexOf(controller.HelperFunctions.DEFAULTPLITTER, end_idx) + controller.HelperFunctions.DEFAULTPLITTER.length();
			end_idx = currnodes.indexOf(controller.HelperFunctions.DEFAULTPLITTER, start_idx);
			if (end_idx != -1 && start_idx < end_idx){
				URI uri = new URIImpl(model.Vocabulary.NAMESPACE+currnodes.substring(start_idx, end_idx));
				cnodes.add(uri);
			}else break uriadd;
		}while(end_idx > start_idx);
		StringBuffer ret = new StringBuffer();
		if (objectId.equals(""))
			ret = controller.HelperFunctions.getSuperNodesForTree(true, true, model.Vocabulary.ENGLISH,om, controller.HelperFunctions.MAXPARALLELTREENODES, cnodes);
		else{	
			ret = controller.HelperFunctions.getSubNodesForTree(new URIImpl(model.Vocabulary.NAMESPACE+objectId), true, true, om, inclass, controller.HelperFunctions.MAXPARALLELTREENODES, cnodes);
		}
		// get the servlet response object here..
		response.setContentType("text/xml");
		
			PrintWriter writer = response.getWriter();
			writer.println(ret.toString());
			writer.close();
		} catch (IOException e) {}
		
	}
}
